using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Content.Pipeline;
using Microsoft.Xna.Framework.Content.Pipeline.Graphics;
using Microsoft.Xna.Framework.Content.Pipeline.Processors;
using System.IO;
using System.Text;
using System.Diagnostics;

namespace RPGX.FontProcessor
{
    /// <summary>
    /// This class will be instantiated by the XNA Framework Content Pipeline
    /// to apply custom processing to content data, converting an object of
    /// type TInput to TOutput. The input and output types may be the same if
    /// the processor wishes to alter data without changing its type.
    ///
    /// This should be part of a Content Pipeline Extension Library project.
    ///
    /// TODO: change the ContentProcessor attribute to specify the correct
    /// display name for this processor.
    /// </summary>
    [ContentProcessor(DisplayName = "RPGX.FontProcessor.ContentProcessor1")]
    public class ContentProcessor1 : FontDescriptionProcessor
    {
        public override SpriteFontContent Process(FontDescription input, ContentProcessorContext context)
        {
            string dir = String.Format("{0}\\Data\\Text", Path.GetDirectoryName(typeof(ContentProcessor1).Assembly.Location));
            var files = Directory.GetFiles(dir, "*.text");

            foreach (string s in files)
            {
                context.AddDependency(s);
            }

            foreach (string s in files)
            {
                string letters = File.ReadAllText(s, Encoding.UTF8);

                foreach (var c in letters)
                {
                    input.Characters.Add(c);
                }
            }

            return base.Process(input, context);
        }
    }
}